iT邦幫忙

1

day3 把「列出 ports」變成真正的「檢查 port 是否開啟」。

  • 分享至 

  • xImage
  •  

day3今天學到
1 學習網路基礎:使用 Socket 做 TCP 連線嘗試,理解 OPEN/CLOSED/TIMEOUT 的差別。
2 對實務有用:系統管理、資安檢測可以用來確認哪些服務在跑(但只能在你有權限的情況下使用)。
3 把錯誤分類:對不同問題(DNS, timeout, refused, 其他網路錯誤)有不同回應,方便 debug 或做自動化處理。
4 為後續優化鋪路:這是同步版本(逐個 port 嘗試),以後可以改成多執行緒、加重試機制、輸出報表等。
https://ithelp.ithome.com.tw/upload/images/20251002/20179429eBSdZHYa1J.pnghttps://ithelp.ithome.com.tw/upload/images/20251002/20179429PUaex8lgBT.pnghttps://ithelp.ithome.com.tw/upload/images/20251002/201794291Y4SvcQ4Vd.png

使用 Socket 嘗試連到 host:port(含 timeout)
把連線結果回傳為可讀的 PortStatus(OPEN / CLOSED / TIMEOUT / ERROR)
把 Day2 的 for 迴圈改成呼叫 checkPort(),列出每個 port 的實際狀態
理解常見例外與其意義(SocketTimeoutException、ConnectException…)
long t0 = System.currentTimeMillis();:記錄開始時間(毫秒)。
for 迴圈:從 start 跑到 end,每個 p 呼叫 checkPort(host, p, timeout)。
System.out.printf("Port %5d -> %-10s%n", p, status);
printf 是格式化輸出:%5d 表示整數欄位寬 5;%-10s 表示字串欄位寬 10、靠左對齊;%n 換行。
這會把結果印得整齊像表格。
long t1 = System.currentTimeMillis();:記錄結束時間,印出總耗時。

實務上什麼情況安全 / 可做
可以且應該在以下環境做實驗 — 這些是被允許的、安全且不會惹麻煩的選擇:
在你自己的電腦上測試。
你自己建立的 VM / 雲端主機(有你帳號):例如 EC2、DigitalOcean 或本地 VM。
實驗室/教學網段 / CTF 練習主機:像 Hack The Box、VulnHub、CTF 平台或專門的靶機。
得到書面/口頭授權的設備:例如公司資產且你被授權測試(最好有書面許可)。
不要掃描:政府機構、金融機構、別人的伺服器、公共 IP 集合(unless authorized)。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言